package com.xiyuan.smartutils.logging;

/**
 * // 全局控制台输出配置
 * LogConfig config = new LogConfig();
 * config.setConsole(true);
 * config.setOutFile(true);
 * config.setDir("E:/logs");
 * config.setFileName("console.out");
 * config.setMaxFileSize("4k");
 * LoggerManager.setConsoleConfig(config);
 * <p>
 * // 日志记录器配置
 * LogConfig apic = new LogConfig();
 * apic.setConsole(true);
 * apic.setOutFile(true);
 * apic.setDir("E:/logs");
 * apic.setFileName("apic.out");
 * apic.setMaxFileSize("4k");
 * // 两个设置模式
 * log.setConfig(apic);
 * LoggerManager.addConfig(log.getName(), config);
 * <p>
 *
 * <br>
 *
 * @author xiyuan-lgz 2022-07-17 @version 1.0.0 新建或整理
 */
public interface Logger {
    
    public LogConfig getConfig();
    
    public Logger setConfig(LogConfig config);
    
    public Logger setLevel(Level level);
    
    public String getName();
    /***********************************************************************/
    // TRACE
    
    /***********************************************************************/
    public void trace(Object message);
    
    public void trace(Object message, Object... arguments);
    
    public void trace(Object message, Throwable throwable, Object... arguments);
    
    /***********************************************************************/
    // 调试
    
    /***********************************************************************/
    
    public void debug(Object message);
    
    public void debug(Object message, Object... arguments);
    
    public void debug(Object message, Throwable throwable, Object... arguments);
    
    /***********************************************************************/
    // 信息
    
    /***********************************************************************/
    
    public void info(Object message);
    
    public void info(Object message, Object... arguments);
    
    public void info(Object message, Throwable throwable, Object... arguments);
    
    /***********************************************************************/
    // 后端警告
    
    /***********************************************************************/
    
    public void warn(Object message);
    
    public void warn(Object message, Object... arguments);
    
    public void warn(Object message, Throwable throwable, Object... arguments);
    
    /***********************************************************************/
    // 错误
    
    /***********************************************************************/
    public void error(Object message);
    
    public void error(Object message, Object... arguments);
    
    public void error(Object message, Throwable throwable, Object... arguments);
    
}
